package core

// ゲームモード
type GameMode interface {
	Activate()
	Deactivate()
	Update()
}

// ゲームモード管理
type GameModeMgr struct {
	curmode GameMode
}

// ゲームモード管理の作成
func NewGameModeMgr() *GameModeMgr {
	return &GameModeMgr{curmode: nil}
}

// ゲームモードの設定
func (m *GameModeMgr) SetGameMode(mode GameMode) {
	if m.curmode != nil {
		m.curmode.Deactivate()
	}
	m.curmode = mode
	m.curmode.Activate()
}

// ゲームモードの更新処理
func (m *GameModeMgr) Update() {
	if m.curmode != nil {
		m.curmode.Update()
	}
}

